package com.wande.dataplatform.domain.dto;

import lombok.Data;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 数据清洗结果DTO
 *
 * @author wande
 */
@Data
public class CleanResultDTO {

    /**
     * 任务ID
     */
    private Long taskId;

    /**
     * 任务名称
     */
    private String taskName;

    /**
     * 表ID
     */
    private Long tableId;

    /**
     * 表名
     */
    private String tableName;

    /**
     * 总行数
     */
    private Long totalRows;

    /**
     * 成功行数
     */
    private Long successRows;

    /**
     * 失败行数
     */
    private Long failedRows;

    /**
     * 清洗前质量评分
     */
    private BigDecimal beforeScore;

    /**
     * 清洗后质量评分
     */
    private BigDecimal afterScore;

    /**
     * 执行时长(毫秒)
     */
    private Long executeDuration;

    /**
     * 备份表名
     */
    private String backupTable;

    /**
     * 清洗详情列表
     */
    private List<CleanDetail> cleanDetails;

    /**
     * 维度统计
     */
    private Map<String, DimensionStat> dimensionStats;

    /**
     * 执行状态
     */
    private String status;

    /**
     * 错误信息
     */
    private String errorMessage;

    /**
     * 清洗详情
     */
    @Data
    public static class CleanDetail {
        /**
         * 规则ID
         */
        private Long ruleId;

        /**
         * 规则名称
         */
        private String ruleName;

        /**
         * 质量维度
         */
        private String dimension;

        /**
         * 清洗类型
         */
        private String cleanType;

        /**
         * 处理行数
         */
        private Long processedRows;

        /**
         * 成功行数
         */
        private Long successRows;

        /**
         * 失败行数
         */
        private Long failedRows;
    }

    /**
     * 维度统计
     */
    @Data
    public static class DimensionStat {
        /**
         * 维度名称
         */
        private String dimension;

        /**
         * 清洗规则数
         */
        private Integer ruleCount;

        /**
         * 处理行数
         */
        private Long processedRows;

        /**
         * 成功率
         */
        private BigDecimal successRate;
    }
}
